"""
2.	任意读取一张图片，
在像素区间[80,150]外分别指定低灰度值、0灰度值，
并对比图像效果。
"""

import cv2
import matplotlib.pyplot as plt
import numpy as np
im = cv2.imread('img.png')
img = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
img1 = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
img2 = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
res1 = img1
res2 = img2
# print(img)
# 区间外低灰度值
for i in range(len(img)):
    for j in range(len(img[0])):
        if img[i][j] >= 150 or img[i][j]<=80: # 在区间外的，设为 0 灰度值
            res1[i][j] = img[i][j]*0.5 - 10
# 区间外 0 灰度值
for i in range(len(img)):
    for j in range(len(img[0])):
        if img[i][j] >= 150 or img[i][j]<=80: # 在区间外的，设为 0 灰度值
            res2[i][j] = 0
# 原图直方图
hist_full = cv2.calcHist([img], [0], None, [256], [0, 256])
plt.subplot(1,3,1)
plt.plot(hist_full)

# 区间外低灰度值直方图
hist_full = cv2.calcHist([res1], [0], None, [256], [0, 256])
plt.subplot(1,3,2)
plt.plot(hist_full)

# 区间外 0 灰度值直方图
hist_full = cv2.calcHist([res2], [0], None, [256], [0, 256])
plt.subplot(1,3,3)
plt.plot(hist_full)
plt.show()
tmp = np.hstack((img, res1, res2)) # 三张图片横向合并（便于对比显示）
cv2.imshow('image', tmp)
cv2.waitKey(0)
